package com.alibaba.citrus.ots.common.annotation;

import com.alibaba.citrus.ots.common.log.ModuleEnum;
import com.alibaba.citrus.ots.common.log.ParamTypeEnum;
import com.alibaba.cz.base.tool.log.model.OperateType;
import com.alibaba.cz.base.tool.log.model.OperatorType;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 操作日志注解
 *
 * @author qjg
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OperaterLog {

    /**
     * 使用com.alibaba.cz.base.tool.log.model.OperateType中的值
     * 操作类型
     *
     * @return
     */
    OperateType operateType() default OperateType.ENABLE;

    /**
     * 使用com.alibaba.cz.base.tool.log.model.OperatorType
     * 操作者类型
     */
    OperatorType operatorType() default OperatorType.INNER_INTERFACE;

    /**
     * 模块
     *
     * @return
     */
    ModuleEnum module() default ModuleEnum.SYSTEM;

    /**
     * 选择参数，默认1：代表入参。 2:代表出参
     * @return
     */
    ParamTypeEnum choiceParam() default ParamTypeEnum.INPUT_PARAM;
}
